package com.swak.frame.enums;


import com.swak.frame.i18n.MessageI18nSourceUtil;
import com.swak.frame.util.StringPool;

import java.util.Objects;

/**
 * @author colley.ma
 * @since 2022/12/1 11:25
 */
public interface EnumType {

    String getValue();

    String getName();

    default int order() {
        return 0;
    }

    default  String category() {
        return StringPool.EMPTY;
    }
    default String getI8nName() {
        if (this instanceof Enum) {
            Enum en = (Enum) this;
            StringBuilder builder = new StringBuilder(this.getClass().getName());
            builder.append(".").append(en.name().toLowerCase());
            return MessageI18nSourceUtil.getMessage(builder.toString(), getName());
        }
        return getName();
    }

    default boolean eq(String value) {
        return Objects.equals(value, getValue());
    }

    default boolean eq(Integer value) {
        if(Objects.isNull(value)){
            return false;
        }
        return eq(value.toString());
    }
}
